package com.vr.cloudpicture.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vr.cloudpicture.model.dto.DeleteRequest;
import com.vr.cloudpicture.model.dto.spaceuser.SpaceUserAddRequest;
import com.vr.cloudpicture.model.dto.spaceuser.SpaceUserEditRequest;
import com.vr.cloudpicture.model.dto.spaceuser.SpaceUserQueryRequest;
import com.vr.cloudpicture.model.dto.user.UserLogin;
import com.vr.cloudpicture.model.entity.SpaceUser;
import com.vr.cloudpicture.model.vo.SpaceUserVO;

import java.util.List;

/**
* @author hzh
* @description 针对表【space_user(空间用户关联)】的数据库操作Service
* @createDate 2025-05-26 19:28:52
*/
public interface ISpaceUserService extends IService<SpaceUser> {

    /**
     * 获取空间用户
     *
     * @param spaceUserQueryRequest 空间用户查询请求
     * @return {@code SpaceUser }
     */
    SpaceUser getSpaceUser(SpaceUserQueryRequest spaceUserQueryRequest);

    /**
     * 获取空间成员列表
     *
     * @param spaceUserQueryRequest 空间用户查询请求
     * @return {@code List<SpaceUserVO> }
     */
    List<SpaceUserVO> listSpaceUserVO(SpaceUserQueryRequest spaceUserQueryRequest);

    /**
     * 编辑成员信息
     *
     * @param spaceUserEditRequest 空间用户编辑请求
     * @param loginUser            登录用户
     * @return {@code Boolean }
     */
    Boolean editSpaceUser(SpaceUserEditRequest spaceUserEditRequest, UserLogin loginUser);

    /**
     * 给空间添加成员
     *
     * @param spaceUserAddRequest 空间用户添加请求
     * @param loginUser           登录用户
     * @return {@code Long }
     */
    Long addSpaceUser(SpaceUserAddRequest spaceUserAddRequest, UserLogin loginUser);

    /**
     * 删除空间用户
     *
     * @param deleteRequest 删除请求
     * @param loginUser     登录用户
     * @return {@code Boolean }
     */
    Boolean deleteSpaceUser(DeleteRequest deleteRequest, UserLogin loginUser);

    void validSpaceUser(SpaceUser spaceUser, boolean add);

    LambdaQueryWrapper<SpaceUser> getQueryWrapper(SpaceUserQueryRequest spaceUserQueryRequest);
}
